Flash Pascal Manual
Flash Pascal is a Pascal like language compiler that build Flash (SWF) files.
Pascal for Flash compiler (c)2008 by Paul TOTH
Pascal for Flash compiler portions (c) 2011 by Péter Gábor
|
Contents of the manual
Released for Flash Pascal version 0.8
This manual is a draft only, so anything or everything may be wrong and can change anytime.
This minor manual contains informations mostly about the special abilities and adventages of the Flash Pascal compiler and nothing about the pascal programing language itself, we assume that you know it.
Some words about Flash Pascal
Flash Pascal is released under the terms of GNU GENERAL PUBLIC LICENSE Version 2. See
copying.txt or
gnu.org for details.
The history of developement can be found in the
history.txt.
The project is hosted at
SourceForge.net.
- Flash Pascal is a Pascal like language compiler that build Flash (SWF) files.
- The main difference from standard pascal is that Flash Pascal must be case sensitive where external identifiers are declared (because Flash is case sensitive).
- The compiler is a command line tool, so it can be started via shell execute command from source code editors.
- The compiler can generate simple HTML file for testing the compiled Flash (SWF) file in a browser.
- Importing of Flash classes can be done with the
EXTERNAL
keyword.
- Aliases for methods of top level Flash classes can be declared with the
EXTERNAL
keyword.
- In external class references any internal Flash Pascal symbols, reserved words or user defined identifiers are accepted (type, class, variable, constant, procedure, function, method names).
- Aliases for methods and properties in declarations of external classes are supported by using the
AS
keyword.
- Bit shifting operators
<<
(shift left),
>>
(signed shift right),
>>>
(unsigned shift right) are supported with the same meaning as the Flash ones.
- etc.
The command line:
FlashPascal.exe [-?|h] [-c] [-[e][n][p][s][t][u][v][w][x]] filename
-? | display usage help message (-h) |
-c | display copyright informations |
-e | display error messages on programming errors |
-h | display usage help message (-?) |
-n | display notes stored in the source |
-p | pause after execution (hit <ENTER> to exit) |
-s | display buggy line of source code on error (with -e only) |
-t | generate html file for (web) testing |
-u | do not compress the swf file (for special needs if any) |
-v | verbose mode, same as -ensw |
-w | display warning messages on possible mistakes |
-x | syntax checking only, no files written |
filename | the file to be compiled, multiple source files are not supported |
The compiler can return different exit codes (errorlevel) after execution:
0 | successful execution (also if warnings were generated or no compilation started) |
1 | programming error |
255 | fatal error (eg. file i/o) |
Flash Pascal internals
The _root object:
_root | the root object of every flash application is
MovieClip
|
Base types:
CHAR | one character |
STRING | character string |
INTEGER | integer number |
DOUBLE | double precision number |
BOOLEAN | boolean |
TOBJECT | undefined: any object, any type |
Keywords:
PROGRAM | program file |
UNIT | unit file |
INTERFACE | interface section |
IMPLEMENTATION | implementation section |
USES | list of required units |
USES ... IN ... | use specified file as source of the unit |
TYPE | type definition block |
CONST | constant declaration block |
VAR | varible declaration block |
NIL | nil (undefined object), can be compared (= or <>) with all kind of variables to test that it is defined or not |
TRUE | boolean true |
FALSE | boolean false |
RESULT | inside a
FUNCTION
this holds the return value, in other places it's free to use |
SELF | reference to the class in its methods |
ARRAY ... OF ... | array definition |
CLASS | class declaration |
CLASS ... EXTERNAL ... | import external Flash class:
MovieClip=external class
or
TMath=external class(Math)
|
CONSTRUCTOR | constuctor of a class |
CONSTRUCTOR ... AS ... | pseudo constructor of a class:
constructor Create(Parent:TObject) as Parent.Create;
|
INHERITED | class method is inherited |
PROPERTY | class property declaration |
PROPERTY ... AS ... | class property alias to override reserved words
property type_:string as type;
|
PROCEDURE ... AS ... | procedure method alias for external Flash class method:
procedure sort_(A:array of TObject;FieldName:string) as sort;
|
FUNCTION ... AS ... | function method alias for external Flash class method:
function Copy_:TContextMenu as copy;
|
PROCEDURE ... OF OBJECT | procedure method prototype definition |
FUNCTION ... OF OBJECT | function method prototype definition |
PROCEDURE ... EXTERNAL ... | procedure alias for external Flash class method:
procedure showSettings(tabID:Number) extenal System.showSettings;
|
FUNCTION ... EXTERNAL ... | function alias for external Flash class method:
function random:double external Math.random;
|
PROCEDURE ... | procedure header |
FUNCTION ... | function header |
BEGIN ... END | code block |
IF ... THEN ... ELSE ... | conditional execution |
FOR ... TO ... DO ... | for block counting up |
FOR ... DOWNTO ... DO ... | for block counting down |
CASE ... OF ... ELSE ... END | case statements accept any kind of expression |
REPEAT ... UNTIL ... | repeat block |
WHILE ... DO ... | while block |
EXIT | return from functions and procedures or stop swf's execution |
Operators:
OR | bitwise and Boolean OR operation |
AND | bitwise and Boolean AND operation |
XOR | bitwise and Boolean XOR operation |
NOT | bitwise and Boolean NOT operation |
= | equal |
>= | greater or equal |
> | greater |
<= | lesser or equal |
< | lesser |
SHRI >> | bitwise signed shift right operation - the sign bit remains untouched, so negative value remains negative |
SHR >>> | bitwise unsigned shift right operation |
SHL << | bitwise shift left operation |
+ | add |
- | subtract |
* | multiply |
:= | assignment |
DIV | divide |
/ | divide double precision numbers |
MOD | modulus (reminder of divide) |
Symbols:
.. | range definition in
CASE
labels and
ARRAY
declaration |
. | decimal point, structure member separator, program end. |
, | parameter and
ARRAY
element separator |
: | data
TYPE
assignment in
VAR
and
FUNCTION
result declarations,
CASE
label definition |
; | statement separator |
( ) | parenthesis |
[ ] | range definition in
ARRAY
declaration |
{$ } | compiler switch delimiters |
(* *) | comment delimiters |
{ } | comment delimiters |
// | comment to the end of line |
$ | hexadecimal number |
# | character code |
' ' | string constant delimiters |
Built-in functions:
COPY(S:string;Start,Length:Integer):string; | get a part of a string |
LENGTH(S:string):Integer; | get length of a string |
ORD(C:Char):Integer; | get ascii value (code) of a character |
CHR(I:Integer):Char; | get character referenced by ascii value (code) |
INC(N:numeric_type):numeric_type; | incremet a number (+1) |
INC(N:numeric_type,N2:numeric_expression):numeric_type; | incremet a number by a specified value |
DEC(N:numeric_type):numeric_type; | decrement a number (-1) |
DEC(N:numeric_type,N2:numeric_expression):numeric_type; | decrement a number by a specified value |
TRUNC(F:Double):Integer; | get integer part of a real number |
INTTOSTR(I:Integer):string; | convert integer to string |
FLOATTOSTR(F:Double):string; | convert double to string |
BOOLTOSTR(B:Boolean):string; | convert boolean to string |
SORT(A:array of base_type); | sort elements in an array |
SORT(A:array of TObject;FieldName:string); | sort the elements in an array according to the given field |
LOW(A:array of any_type):Integer; | lowest index in an array (0 for open arrays) |
HIGH(A:array of any_type):Integer; | highest index in an array (including undefined items to the highest defined for open arrays) |
TRACE(S:string); | write a string to the debug output (not tested) |
Compiler switches:
FRAME_WIDTH pixel_count | set the width of the SWF frame |
FRAME_HEIGHT pixel_count | set the height of the SWF frame |
FRAME_RATE frames_per_second | set the frame rate per seconds |
BACKGROUND color | set the background color of the SWF frame |
VERSION flash_version | minimal version of flash required to play the compiled SWF file |
NOTE any_text | important notices that can be displayed at compile time |
Acknowledgment
The SWF code part is based on
Sphing (Swf with PHp without mING): Copyright 2002 Igor Clukas
Deflate is based on
paszlib: Copyright (C) 1998 by Jacques Nomssi Nzali
The original
ZLib: Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
The
SWF File Format Reference was originally written by Alexis Wilke.
Interface units based on
MTASC headers: (c)2004-2008 Motion-Twin
Regards, Paul TOTH & Péter Gábor